package com.unionpay.upyzt.model;

import com.unionpay.upyzt.exception.UpyztException;
import com.unionpay.upyzt.net.APIResource;
import com.unionpay.upyzt.net.RequestOptions;
import com.unionpay.upyzt.resp.AcctPasswordResp;
import lombok.experimental.Accessors;

import java.util.Map;

@Accessors(chain = true)
public class AcctPassword extends APIResource {

    /**
     * 修改交易授权码
     *
     * @param params 请求参数
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public static AcctPasswordResp update(Map<String, Object> params) throws UpyztException {
        return update(params, null);
    }

    /**
     * 修改交易授权码
     *
     * @param params  请求参数
     * @param options 参数选项
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public static AcctPasswordResp update(Map<String, Object> params, RequestOptions options) throws UpyztException {
        return APIResource.request(RequestMethod.PUT, classURL(AcctPassword.class), params, AcctPasswordResp.class, options);
    }

    /**
     * 获取用于重置交易授权码的短信验证码
     *
     * @param params 请求参数
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public static AcctPasswordResp smsCode(Map<String, Object> params) throws UpyztException {
        return smsCode(params, null);
    }


    /**
     * 获取用于重置交易授权码的短信验证码
     *
     * @param params  请求参数
     * @param options 参数选项
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public static AcctPasswordResp smsCode(Map<String, Object> params, RequestOptions options) throws UpyztException {
        return APIResource.request(RequestMethod.POST, singleClassURL(AcctPassword.class, "_sms_codes"), params, AcctPasswordResp.class, options);
    }


    /**
     * 重置交易授权码
     *
     * @param params 请求参数
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public static AcctPasswordResp reset(Map<String, Object> params) throws UpyztException {
        return reset(params, null);
    }


    /**
     * 重置交易授权码
     *
     * @param params  请求参数
     * @param options 参数选项
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public static AcctPasswordResp reset(Map<String, Object> params, RequestOptions options) throws UpyztException {
        return APIResource.request(RequestMethod.POST, classURL(AcctPassword.class), params, AcctPasswordResp.class, options);
    }

}
